/******************************************************************
 *
 *  CyberUtil for Java
 *
 *  Copyright (C) Satoshi Konno 2002-2003
 *
 *  File: FileUtil.java
 *
 *  Revision:
 *
 *  01/12/03
 *    - first revision.
 *
 ******************************************************************/

package org.cybergarage.util;

public final class StringUtil
{
    public final static boolean hasData(String value)
    {
        if (value == null)
            return false;
        if (value.length() <= 0)
            return false;
        return true;
    }

    public final static int toInteger(String value)
    {
        try {
            return Integer.parseInt(value);
        }
        catch (Exception e) {
            Debug.warning(e);
        }
        return 0;
    }


    public final static long toLong(String value)
    {
        try {
            return Long.parseLong(value);
        }
        catch (Exception e) {
            Debug.warning(e);
        }
        return 0;
    }

    public final static int findOf(String str,
        String chars, int startIdx, int endIdx, int offset, boolean isEqual)
    {
        if (offset == 0)
            return -1;
        int charCnt = chars.length();
        int idx = startIdx;
        while (true) {
            if (0 < offset) {
                if (endIdx < idx)
                    break;
            }
            else {
                if (idx < endIdx)
                    break;
            }
            char strc = str.charAt(idx);
            int noEqualCnt = 0;
            for (int n=0; n<charCnt; n++) {
                char charc = chars.charAt(n);
                if (isEqual == true) {
                    if (strc == charc)
                        return idx;
                }
                else {
                    if (strc != charc)
                        noEqualCnt++;
                    if (noEqualCnt == charCnt)
                        return idx;
                }
            }
            idx += offset;
        }
        return -1;
    }

    public final static int findFirstOf(String str, String chars)
    {
        return findOf(str, chars, 0, (str.length()-1), 1, true);
    }

    public final static int findFirstNotOf(String str, String chars)
    {
        return findOf(str, chars, 0, (str.length()-1), 1, false);
    }

    public final static int findLastOf(String str, String chars)
    {
        return findOf(str, chars, (str.length()-1), 0, -1, true);
    }

    public final static int findLastNotOf(String str, String chars)
    {
        return findOf(str, chars, (str.length()-1), 0, -1, false);
    }

    public final static String trim(String trimStr, String trimChars)
    {
        int spIdx = findFirstNotOf(trimStr, trimChars);
        if (spIdx < 0) {
            String buf = trimStr;
            return buf;
        }
        String trimStr2 = trimStr.substring(spIdx, trimStr.length());
        spIdx = findLastNotOf(trimStr2, trimChars);
        if (spIdx < 0) {
            String buf = trimStr2;
            return buf;
        }
        String buf = trimStr2.substring(0, spIdx+1);
        return buf;
    }
}

